package club.controller;

import club.pojo.Admins;
import club.service.AdminService;
import club.service.UserService;
import club.util.Message;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
@Controller
@RequestMapping("/admin")
public class AdminController {
    @Resource
    private AdminService adminService;

    // 添加管理员
    @RequestMapping("/create")
    @ResponseBody
    public Message add(Admins admins, MultipartFile file){
        // 上传管理员头像
        String pic = FileLoad.uploadAdminPic(file);
        admins.setPic(pic);
        // 调用服务层添加管理员
        int add = adminService.add(admins);
        if(add>0){
            return Message.success();// 添加成功
        }else{
            return Message.fail(); // 添加失败
        }
    }
    // 根据ID查找管理员
    @RequestMapping("findById")
    @ResponseBody
    public Message findById(Integer id){
        // 调用服务层根据ID查找管理员
        Admins byId = adminService.findById(id);
        return Message.success().add("admin",byId);
    }
    // 更新管理员信息
    @RequestMapping("/update")
    @ResponseBody
    public Message update(Admins admins, MultipartFile file){
        // 如果上传了新的头像，更新头像信息
        if (file != null && file.getSize() > 0){
            String pic = FileLoad.uploadAdminPic(file);
            admins.setPic(pic);
        }
        // 调用服务层更新管理员信息
        int update = adminService.update(admins);
        if(update>0){
            return  Message.success();// 更新成功
        }else {
            return Message.fail();// 更新失败
        }
    }
    // 删除管理员
    @RequestMapping("/delete")
    @ResponseBody
    public Message del(Integer id){
        // 调用服务层删除管理员
        int del = adminService.del(id);// 删除成功
        if(del>0){
            return Message.success();// 删除失败
        }else {
            return Message.fail();
        }
    }
    // 分页查询管理员列表
    @RequestMapping("/admins")
    @ResponseBody
    public Message admins(@RequestParam(required = false) String adminName, @RequestParam("pn") Integer pageNum) {
        Integer pageSize = 4;
        if(pageNum == null){
            pageNum = 1;
        }
        // 调用服务层进行管理员分页查询
        PageInfo<Admins> list = adminService.adminPage(adminName, pageNum, pageSize);
        return Message.success().add("pageInfo", list);
    }

    // 跳转到管理员管理页面
    @RequestMapping("/admin")
    public String admin() {
        return "admin/admin";
    }

    // 跳转到宠物领养管理页面
    @RequestMapping("/adopt")
    public String adopt() {
        return "admin/adopt";
    }

    // 跳转到审核通过页面
    @RequestMapping("/agree")
    public String agree() {
        return "admin/agree";
    }

    // 跳转到申请管理页面
    @RequestMapping("/apply")
    public String apply() {
        return "admin/apply";
    }

    // 跳转到博客管理页面
    @RequestMapping("/blog")
    public String blog() {
        return "admin/blog";
    }

    // 跳转到评论管理页面
    @RequestMapping("/comment")
    public String comment() {
        return "admin/comment";
    }

    // 跳转到审核不通过页面
    @RequestMapping("/disAgree")
    public String disAgree() {
        return "admin/disAgree";
    }

    // 跳转到宠物管理页面
    @RequestMapping("/pet")
    public String pet() {
        return "admin/pet";
    }

    // 跳转到用户管理页面
    @RequestMapping("/user")
    public String user() {
        return "admin/user";
    }

    // 跳转到管理员登录页面
    @RequestMapping("/login")
    public String login() {
        return "admin/login";
    }

    // 处理管理员登录逻辑
    @RequestMapping("/dologin")
    public String doLogin(HttpSession session, String adminName, String adminPwd) {
        // 调用服务层进行管理员登录验证
        Admins login = adminService.login(adminName, adminPwd);
        if (login == null) {
            session.setAttribute("msg", "用户名或密码错误！");
            return "redirect:/admin/login"; // 登录失败重定向到登录页面
        }
        session.setAttribute("admin", login);
        return "redirect:/admin/admin"; // 登录成功重定向到管理员管理页面
    }

    // 管理员注销登录
    @RequestMapping("/logout")
    public String logout(HttpSession session) {
        session.invalidate(); // 使session失效
        return "redirect:/admin/login"; // 注销后重定向到登录页面
    }

    // 跳转到开发中页面
    @RequestMapping("/developing")
    public String developing() {
        return "admin/developing";
    }
}